#include<bits/stdc++.h>
#define ls p<<1
#define rs p<<1|1
#define ll long long
using namespace std;
inline void read(int& x){
    x=0;int f=1;char ch=getchar();
    for(;!isdigit(ch);ch=getchar()){if(ch=='-')f=-1;}
    for(;isdigit(ch);ch=getchar()){x=(x<<3)+(x<<1);x+=(int)ch-'0';}x*=f;
}
const int N=1e5+5;
bool special1=true;
bool special2=true;
int n,m;
int a[N];
int c[N];
int k;
int d[N];
int T;
int x[4];
int A[N];

int t[N<<2];

void push_up(int p){
    if(a[ls]>a[rs]){
        t[p]=t[ls];
    }else{
        t[p]=t[rs];
    }
}

void build(int p,int dl,int dr){
    if(dl==dr){
        t[p]=dl;
        return ;
    }
    int mid=(dl+dr)>>1;
    build(ls,dl,mid);build(rs,mid+1,dr);
    push_up(p);
}

int query(int p,int dl,int dr,int lef,int rig){
    if(lef<=dl&&dr<=rig){
        return t[p];
    }
    int res=0;
    int pos;
    int mid=(dl+dr)>>1;
    if(lef<=mid){
        int qu=query(ls,dl,mid,lef,rig);
        if(a[t[qu]]>res){
            res=a[t[qu]];
            pos=t[qu];
        }
    }
    if(mid<rig){
        int qu=query(rs,mid+1,dr,lef,rig);
        if(a[t[qu]]>res){
            res=a[t[qu]];
            pos=t[qu];
        }
    }
    return  pos;
}

void init(){
    memset(t,0,sizeof(t));
}

int qpow(int fir,int sec){
    int s=1;
    while(sec){
        if(sec&1)s*=fir;
        fir*=fir;
        sec>>=1;
    }
    return s;
}

void work1(){
    
    int ans=0;
    for(int i=1;i<=m;i++){
        int res=0,pos;
        for(int j=1;j<=c[i];j++){
            if(a[j]>res){
                res=a[j];pos=j;
            }
        }
        ans^=(i*pos);
        // cout<<pos<<endl;
    }
    cout<<ans<<endl;
}

int main(){
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    read(n);read(m);
    for(int i=1;i<=n;i++){
        read(a[i]);
    }
    for(int i=1;i<=m;i++){
        read(c[i]);
        if(qpow(2,(int)log2(c[i]))!=c[i])special1=false;
    }
    while((1<<k)<n)k++;
    for(int i=1;i<=k;i++){
        read(d[i]);
        if(d[i]!=0)special2=false;
    }
    read(T);
    while(T--){
        init();
        read(x[0]);read(x[1]);read(x[2]);read(x[3]);
        for(int i=1;i<=n;i++){
            a[i]=a[i]^x[i%4];
        }
        if(special1){
            work1();
        }
        // cout<<endl;
        // for(int i=1;i<=n;i++){
        //     cout<<a[i]<<' ';
        // }
        // cout<<endl;
    }
    return 0;
}